package com.sg.dto.biz.framework.common;


import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @desc OrgPositionGradeDto
 * @使用场景
 */
@Data
public class OrgPositionGradeDto extends BaseDto implements Serializable {

    /**
     * 职务级别ID:
     */
    @NotNull(message = "职务级别ID不能为空")
    @ApiModelProperty("职务级别ID")
    private String positionGradeId;

    /**
     * 职务级别名称:
     */
    @NotNull(message = "职务级别名称不能为空")
    @ApiModelProperty("职务级别名称")
    private String positionGradeName;
    /**
     * 岗位类型ID:
     */
    @ApiModelProperty("岗位类型ID")
    private String stationTypeId;
    /**
     * 岗位类型名称:
     */
    @ApiModelProperty("岗位类型名称")
    private String stationTypeName;
    /**
     * 职务级别编号:
     */
    @ApiModelProperty("职务级别编号")
    private String positionGradeNumber;
    /**
     * 是否设置等级范围:
     */
    @ApiModelProperty("是否设置等级范围")
    private String isSetGrade;
    /**
     * 排序:
     */
    @ApiModelProperty("排序")
    private Long orderNumber;
    /**
     * 批次ID:
     */
    @ApiModelProperty("批次ID")
    private String batchId;
    /**
     * 批次开始时间:
     */
    @ApiModelProperty("批次开始时间 ")
    private Date batchStartTime;
    /**
     * 批次结束时间:
     */
    @ApiModelProperty("批次结束时间")
    private Date batchEndTime;
    /**
     * 主体生命周期:
     */
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;
    /**
     * 是否存档:
     */
    @ApiModelProperty("是否存档")
    private String isArchive;
    /**
     * 存档类型:
     */
    @ApiModelProperty("存档类型")
    private String archivngType;
    /**
     * 是否未来:
     */
    @ApiModelProperty("是否未来")
    private String isEditing;
    /**
     * 批次下是否更新:
     */
    @ApiModelProperty("批次下是否更新")
    private String isUpdate;
    /**
     * 批次下更新状态:
     */
    @ApiModelProperty("批次下更新状态")
    private String updateStatus;
    /**
     * 操作人就职记录ID:
     */
    @ApiModelProperty("操作人就职记录ID")
    private String operationInductionId;
    /**
     * 操作时间:
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        OrgPositionGradeDto that = (OrgPositionGradeDto) o;
        return positionGradeId == that.positionGradeId && positionGradeName == that.positionGradeName && stationTypeId == that.stationTypeId && stationTypeName == that.stationTypeName && positionGradeNumber == that.positionGradeNumber && isSetGrade == that.isSetGrade && orderNumber == that.orderNumber && batchId == that.batchId && batchStartTime == that.batchStartTime && batchEndTime == that.batchEndTime && subjectLifeCycle == that.subjectLifeCycle && isArchive == that.isArchive && archivngType == that.archivngType && isEditing == that.isEditing && isUpdate == that.isUpdate && updateStatus == that.updateStatus && operationInductionId == that.operationInductionId && operateTime == that.operateTime;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), positionGradeId, positionGradeName, stationTypeId, stationTypeName, positionGradeNumber, isSetGrade, orderNumber, batchId, batchStartTime, batchEndTime, subjectLifeCycle, isArchive, archivngType, isEditing, isUpdate, updateStatus, operationInductionId, operateTime);
    }

}
